package com.example.lafritedechainee;

// classe gerant l'ajout de markers sur la carte

import java.util.ArrayList;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

public class MarkerOverlay extends ItemizedOverlay<OverlayItem> {

	private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
	private Context mContext;

	public MarkerOverlay(Drawable defaultMarker, Context context) {
		super(boundCenterBottom(defaultMarker));
		mContext = context;
	}

	public MarkerOverlay(Drawable defaultMarker) {
		// affiche le marker en positionnant son centre du bas a la position
		// souhaite sur la carte
		super(boundCenterBottom(defaultMarker));
	}

	public void addOverlay(OverlayItem overlay) {
		mOverlays.add(overlay);
	}
	
	public void populateNow(){
		populate();
	}

	@Override
	protected OverlayItem createItem(int i) {
		// quand populate() s'execute, elle appelle createItem(int) pour
		// retrouver chaque OverlayItem.
		// on doit donc surcharger cette methode pour lire proprement le
		// ArrayList et renvoyer le OverlayItem correspondant a la position
		// souhaite.
		return mOverlays.get(i);
	}

	@Override
	public int size() {
		return mOverlays.size();
	}

	// pour afficher un message quand on touche le marker
	@Override
	protected boolean onTap(int index) {
	  final OverlayItem item = mOverlays.get(index);
	  AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
	  dialog.setTitle(item.getTitle());
	  dialog.setMessage(item.getSnippet());
	  dialog.setNeutralButton(R.string.go, new OnClickListener() {	
		public void onClick(DialogInterface dialog, int which) {
			Uri location = Uri.parse("google.navigation:q="+item.getPoint().getLatitudeE6()/1E6+","+item.getPoint().getLongitudeE6()/1E6);
			Intent intent = new Intent(Intent.ACTION_VIEW, location);
			((Dialog) dialog).getContext().startActivity(intent);
		}
	});
	  dialog.show();
	  return true;
	}
}
